package com.electromagnetic.industry.software.manage.pojo.models;

import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.annotation.TableName;
import com.electromagnetic.industry.software.common.cons.UserConstants;
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
import com.electromagnetic.industry.software.common.util.EleCommonUtil;
import com.electromagnetic.industry.software.common.util.EleIdCreator;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

@EqualsAndHashCode(callSuper = true)
@TableName("ed_users")
@Data
public class User extends BaseModel {

    /**
     * 主键ID
     */
    private String id;

    /**
     * 用户姓名
     */
    private String userName;

    /**
     * 工号
     */
    private String workNumber;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 所属部门
     */
    private String userDept;

    /**
     * 职称
     */
    private String userTitle;

    /**
     * 账户
     */
    private String userAccount;

    /**
     * 登录密码
     */
    private String userPwd;

    /**
     * 入职日期
     */
    private Date joinTime;

    /**
     * 工作状态
     */
    private String userStatus;

    /**
     * 实习截止日期
     */
    private Date internshipEndDate;

    /**
     * 管理员类型
     */
    private String adminType;

    /**
     * 是否已发布（系统管理员）
     */
    private Integer isPublished;

    /**
     * 是否已激活（安全管理员）
     */
    private Integer isActivated;

    /**
     * 盐
     */
    private String salt;

    public void newInit() {
        this.setId(EleIdCreator.createSnowflakeId());
        this.setSalt(RandomUtil.randomString(16));
        this.setUserPwd(EleCommonUtil.getStrMd5(UserConstants.DEFAULT_PASSWORD + this.getSalt()));
        this.setIsPublished(UserConstants.DEFAULT_PUBLISH_STATUS);
        this.setIsActivated(UserConstants.DEFAULT_ACTIVE_STATUS);
        this.setAdminType(AdminTypeEnum.NORMAL.getValue());
    }
}
